In the field of distributed computer systems, resources are made available for use by computer applications. Computer applications may require different computer resource types, such as central processing unit (CPU), memory, network, and data storage. Resources from multiple computer systems may be aggregated into one or more resource pools. Resource requests may include multiple resource types.
Selection of resources to satisfy resource requests is made by a scheduler. The scheduler makes decisions based on algorithms or rules. Typically, there is no specific format required for the rules the scheduler uses to make decisions.
Where resource schedulers exist currently, the rules they use are predefined to select a specific behavior or algorithm. This has the disadvantage of being difficult to specify or change scheduling behavior, and difficult to specify or change scheduling behavior for only some types of resources.
Existing distributed computer systems require that the requestor specify features or attributes that the required resource must exhibit. For example, if an encrypted data volume was required by the requestor, then details about the encryption cipher and the encryption key would need to be provided by the requestor. As resources typically have multiple features and attributes, their specification can be cumbersome and difficult to manage in large environments, often leading to inconsistent configuration and ultimately, incorrect behavior.